pub fn convert_base(num_str: &str, to_base: u32) -> String {
    // 分离输入的数字和其进制，例如 "1111(2)" 分割为 "1111" 和 "2"
    let parts: Vec<&str> = num_str.split('(').collect();
    let number = parts[0];
    let from_base: u32 = parts[1][..parts[1].len() - 1].parse().unwrap();

    // 将输入字符串从 from_base 转换为十进制整数
    let decimal_value = u32::from_str_radix(number, from_base).unwrap();

    // 将十进制整数转换为目标进制字符串
    decimal_to_base_string(decimal_value, to_base)
}

// 辅助函数：将十进制整数转换为目标进制的字符串
fn decimal_to_base_string(mut num: u32, base: u32) -> String {
    if num == 0 {
        return "0".to_string();
    }

    let mut result = String::new();
    while num > 0 {
        let remainder = num % base;
        // 处理余数，将 0-9 作为数字，10-15 转换为小写字母 a-f
        let digit = if remainder < 10 {
            (b'0' + remainder as u8) as char
        } else {
            (b'a' + (remainder - 10) as u8) as char
        };
        result.push(digit);
        num /= base;
    }

    // 因为构建字符串时是从低位到高位，所以需要反转
    result.chars().rev().collect()
}
